package com.lagou.web.servlet;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.lagou.base.BaseServlet;
import com.lagou.pojo.Course;
import com.lagou.pojo.Course_Lesson;
import com.lagou.pojo.Course_Section;
import com.lagou.service.CourseContentService;
import com.lagou.service.impl.CourseContentServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

@WebServlet("/courseContent")
public class CourseContentServlet extends BaseServlet {

    /** * 展示对应课程的章节与课时信息 * */
    public void findSectionAndLessonByCourseId(HttpServletRequest request , HttpServletResponse response){

        try {
            // 1、获取参数
            String course_id = request.getParameter("course_id");

            // 2、业务处理
            CourseContentService contentService = new CourseContentServiceImpl();
            List<Course_Section> sectionList = contentService.findSectionAndLessonByCourseId(Integer.parseInt(course_id));

            // 3、返回结果
            String resulet = JSON.toJSONString(sectionList);
            response.getWriter().println(resulet);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //回显章节对应的课程信息
    public void findCourseById(HttpServletRequest request, HttpServletResponse response){

        try {
            // 1、获取参数
            String courseId = request.getParameter("course_id");

            // 2、业务处理
            CourseContentService contentService = new CourseContentServiceImpl();
            Course course = contentService.findCourseById(Integer.parseInt(courseId));

            // 3、返回数据，将对象转换成JSON，只转换需要的字段
            SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Course.class,"id","course_name");

            String result = JSON.toJSONString(course, filter);
            response.getWriter().println(result);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


    /**
     * 保存修改 章节信息
     * @param request
     * @param response
     */
    public void saveOrUpdateSection(HttpServletRequest request, HttpServletResponse response){
        try {
            // 1、获取参数  从域对象中获取
            Map<String,Object> map = (Map)request.getAttribute("map");

            //2.创建Course_Section
            Course_Section section = new Course_Section();

            //3.使用BeanUtils工具类,将map中的数据封装到 section
            BeanUtils.populate(section,map);

            // 4、业务处理
            CourseContentService contentService = new CourseContentServiceImpl();

            //判断是否携带ID
            if(section.getId() == 0){
                String result = contentService.saveSection(section);
                // 5、响应结果
                response.getWriter().println(result);
            }else{
                //修改操作
                String result = contentService.updateSection(section);
                response.getWriter().println(result);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    /**
     * 修改章节信息
     */
    public void updateSectionStatus(HttpServletRequest request , HttpServletResponse response){

        try {
            // 1、获取参数
            int id = Integer.parseInt(request.getParameter("id"));
            int status = Integer.parseInt(request.getParameter("status"));

            //4、业务处理
            CourseContentService contentService = new CourseContentServiceImpl();
            String result = contentService.updateSectionStatus(id, status);

            // 5、返回结果数据
            response.getWriter().println(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     *  保存、修改 课时信息
     */
    public void saveOrUpdateLesson(HttpServletRequest request, HttpServletResponse response){

        try {
            // 1、获取参数  从域对象中获取
            Map<String, Object> map = (Map)request.getAttribute("map");

            // 2、创建Course_lesson
            Course_Lesson lesson = new Course_Lesson();

            // 3、使用BeanUtils工具类， 将map中 数据封装到 lesson
            BeanUtils.populate(lesson, map);

            // 4、业务处理
            CourseContentService contentService = new CourseContentServiceImpl();

            //判断是否携带ID
            if(lesson.getId() == 0){
                String result = contentService.saveLesson(lesson);
                //5、响应结果
                response.getWriter().println(result);
            }else{
                //修改操作
                String result = contentService.updateLesson(lesson);
                response.getWriter().println(result);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
